﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sistema.WF.Componentes.FormulariosBase;
using Sistema.Dominio;
using Sistema.Kernel;

namespace Sistema.WF.View.Kernel
{
    public partial class FRM_cadastroUsuario : Sistema.WF.Componentes.FormulariosBase.FRM_cadastro
    {
        private UsuarioInfo _usuarioInfo;
       

        public FRM_cadastroUsuario()
        {
            InitializeComponent();
            
        }
        private void CarregaTela(UsuarioInfo usuarioInfo)
        {
            try
            {


                R2DadosPessoais.DadosPessoais = usuarioInfo.DadosPessoais;
                R2Endereco.Endereco = usuarioInfo.Endereco[0];
                R2Telefone.MultiplosTelefones = usuarioInfo.Telefone;
                //R2Email.EmailMultiplos = _email;
                R2Login.Login = _usuarioInfo.Login;
            }
            catch (Exception)
            {
                throw;
            }

        }

        private void FRM_cadastroUsuario_Load(object sender, EventArgs e)
        {
           _usuarioInfo = new UsuarioInfo();
        
        }
        protected override void LimparCampos()
        {
            R2DadosPessoais.LimparCampos();
            R2Endereco.LimparCampos();
            R2Login.LimparCampos();
            
        }

        protected override void Cadastrar()
        {
            try
            {
                IList<EnderecoVO> listaEndereco = new List<EnderecoVO>();
                Usuario cadastrar = new Usuario();
                UsuarioInfo _usuarioNovo = new UsuarioInfo();
                listaEndereco.Add(R2Endereco.Endereco);

                base.Cadastrar();

                _usuarioNovo.DadosPessoais = R2DadosPessoais.DadosPessoais;
                _usuarioNovo.Endereco = listaEndereco;
                _usuarioNovo.Telefone = R2Telefone.MultiplosTelefones;
                // = R2Email.EmailMultiplos;
                _usuarioNovo.Login = R2Login.Login;

                cadastrar.Cadastrar(_usuarioNovo);
                _usuarioNovo = null;
                this.LimparCampos();
                MessageBox.Show("Usuario Cadastrado com Sucesso!");
            }
            catch (ViewException ex)
            {
                ex.MensagemAoUsuario = "Ocorreu um erro ao tentar cadastrar o usuário.";
            }
        }

        protected override void Alterar()
        {
            try
            {
                IList<EnderecoVO> listaEndereco = new List<EnderecoVO>();
                Usuario alterar = new Usuario();
                listaEndereco.Add(R2Endereco.Endereco);

                base.Alterar();

                _usuarioInfo.DadosPessoais = R2DadosPessoais.DadosPessoais;
                _usuarioInfo.Endereco = listaEndereco;
                _usuarioInfo.Telefone = R2Telefone.MultiplosTelefones;
                // = R2Email.EmailMultiplos;
                _usuarioInfo.Login = R2Login.Login;

                alterar.Alterar(_usuarioInfo);
                this.LimparCampos();
                MessageBox.Show("Usuario Alterado com Sucesso!");
            }
            catch (ViewException ex)
            {
                ex.MensagemAoUsuario = "Ocorreu um erro ao tentar alterar o usuário.";
            }

        }
        protected override void Excluir()
        {
            try
            {
                IList<EnderecoVO> listaEndereco = new List<EnderecoVO>();
                Usuario excluir = new Usuario();
                listaEndereco.Add(R2Endereco.Endereco);

                base.Excluir();

                _usuarioInfo.DadosPessoais = R2DadosPessoais.DadosPessoais;
                _usuarioInfo.Endereco = listaEndereco;
                _usuarioInfo.Telefone = R2Telefone.MultiplosTelefones;
                // = R2Email.EmailMultiplos;
                _usuarioInfo.Login = R2Login.Login;

                //MessageBox.Show("confirmação");
                excluir.Excluir(_usuarioInfo);
                this.LimparCampos();
                MessageBox.Show("Usuario Excluido com Sucesso!");
            }
            catch (ViewException ex)
            {
                ex.MensagemAoUsuario = "Ocorreu um erro ao tentar excluir o usuário.";
            }
        }
        protected override void Pesquisa()
        {
            base.Pesquisa();
            FRM_pesquisarUsuario telaPesquisa = new FRM_pesquisarUsuario();
            _usuarioInfo = telaPesquisa.Pesquisar();
            this.CarregaTela(_usuarioInfo);
            //this.Alterar();
        }

        private void R2DadosPessoais_Load(object sender, EventArgs e)
        {
            IList<TelefoneVO> asd =  R2Telefone.MultiplosTelefones;
            
        }

        private void CMD_alterar_Click(object sender, EventArgs e)
        {
            base.Alterar();

        }

       /* private void CMD_inserir_Click(object sender, EventArgs e)
        {
            this.Cadastrar();
            
        }*/
    }
}
